<?php

/**

 * 订单模型

 * @author maniac

 */

namespace app\common\model;

use app\common\model\Diqu as DiquModel;
use app\common\model\PointGoods as PointGoodsModel;

use think\facade\Log As Log;
use app\common\model\Goods;



class PointOrders extends SoftDel

{

    public $tableName = '订单';                  // 数据表名称

    public $logId     = ['id', 'order_no'];     // 日志操作相关标识

    public $softId    = 1;                      // 软删除标识



    public $insert = ['create_time'];

//     /**
    
//     * 商品名称获取器
    
//     * @param  string $value 字段值
    
//     * @param  array  $data  所有数据
    
//     */
    
//     public function getGoodsNameAttr($value, $data)
    
//     {
    
//     	$ticket = Goods::field('goods_name')->where('id', $data['goods_id'])->find();
    
//     	return $ticket['goods_name'];
    
//     }
    
   
    public function getReceiverDistrictAttr($value, $data)

    {

        $dis = DiquModel::field('region_name')->where('region_id', $data['receiver_district'])->find();
    	return $dis['region_name'];

    }
    /**

     * 订单创建时间修改器

     * @param string $value 字段值

     */

    public function setCreateTimeAttr($value)

    {

        return time();

    }



    /**

     * 支付时间获取器

     * @param string $value 字段值

     * @param array  $data  所有数据

     */

    public function getPayTimeDateAttr($value, $data)

    {

        return $data['pay_time'] ? date('Y-m-d H:i:s', $data['pay_time']) : '';

    }



    /**

     * 发货时间获取器

     * @param string $value 字段值

     * @param array  $data  所有数据

     */

    public function getSendTimeDateAttr($value, $data)

    {

        return $data['send_time'] ? date('Y-m-d H:i:s', $data['send_time']) : '';

    }


    /**

     * 签收时间获取器

     * @param string $value 字段值

     * @param array  $data  所有数据

     */

    public function getSignTimeDateAttr($value, $data)

    {

        return $data['sign_time'] ? date('Y-m-d H:i:s', $data['sign_time']) : '';

    }



    /**

     * 订单完成时间获取器

     * @param string $value 字段值

     * @param array  $data  所有数据

     */

    public function getFinishTimeDateAttr($value, $data)

    {

        return $data['finish_time'] ? date('Y-m-d H:i:s', $data['finish_time']) : '';

    }



    /**

     * 支付方式名称

     * @param string $value 字段值

     * @param array  $data  所有数据

     */

    public function getPayTypeNameAttr($value, $data)

    {

        $name = ['', '微信支付', '货到付款', '积分支付', '抵用券支付', '余额支付'];

        return $name[$data['pay_type']];

    }



    /**

     * 订单创建时间获取器

     * @param string $value 字段值

     * @param array  $data  所有数据

     */

    public function getCreateTimeDateAttr($value, $data)

    {

        return date('Y-m-d H:i:s', $data['create_time']);

    } 
    /**
    
    * 获取订单商品列表
    
    * @param string $value 字段值
    
    * @param array  $data  全部数据
    
    */
    
    public function getGoodsListAttr($value, $data)
    
    {
    
    	$fields = 'id,goods_id,goods_name,sku_id,point,sku_name,sale_price,goods_nums,image_uri';
    
    	$module = request()->module();
    
    	if ($module == 'manage') {
    
    		$fields .= ',cost_price';
    
    	}
    
    	$list=PointGoodsModel::field($fields)->where('order_id', $data['id'])->order('id ASC')->select()->toArray();
    
    	
    	return $list;
    
    
    }


    /**

     * 获取订单状态文本

     * @param  string $value 字段值

     * @param  array  $data  全部数据

     */

    public function getOrderStatusTxtAttr($value, $data)

    {

        $txt = [

            0 => '待确认',

            1 => '订单已确认',

            2 => '订单已取消',

            3 => '订单已关闭',

            4 => '待付款',

            5 => '待发货',

            6 => '待收货',

            7 => '申请退货',

            8 => '退货中',

            9 => '已退货',

            10 => '申请退款',

            11 => '退款中',

            12 => '拒绝退款',

            13 => '已退款',

            14 => '已收货',

            15 => '已完成',

        ];

        $txtId = $this->getOrderStatusIdAttr($value, $data);

        return $txt[$txtId];

    }

    /**

     * 获取订单状态标识

     * @param  string $value 字段值

     * @param  array  $data  全部数据

     */

    public function getOrderStatusIdAttr($value, $data)

    {

        // order_status 订单状态，0：未确认；1：已确认；2：已取消；3：已关闭；4：申请退货；5：申请退款；255：订单已完成；

        // pay_status 支付状态，0：未支付；1：已支付；2：退款中；3：拒绝退款；4：已退款；

        // shipping_status 配送状态，0：未发货；1：已发货，配送中；2：已收货；3：退货中；4：已退货；

        if ($data['order_status'] == 0) {

            // 未确认

            $txtId = 0;

        } elseif ($data['order_status'] == 1) {

            // 已确认

            $txtId = 1;

            if ($data['pay_status'] == 0) {

                // 未支付

                $txtId = 4;

                if ($data['pay_type'] == 2) {

                    // 货到付款，待发货

                    $txtId = 5;

                }

            } elseif ($data['pay_status'] == 1) {

                // 已支付，待发货

                $txtId = 5;

                if ($data['shipping_status'] == 0) {

                    // 未发货

                    $txtId = 5;

                } elseif ($data['shipping_status'] == 1) {

                    // 已发货，配送中

                    $txtId = 6;

                } elseif ($data['shipping_status'] == 2) {

                    // 已收货

                    $txtId = 14;

                }

            } elseif ($data['pay_status'] == 2) {

                // 退款中

                $txtId = 11;

            } elseif ($data['pay_status'] == 3) {

                // 拒绝退款

                $txtId = 12;

            } elseif ($data['pay_status'] == 4) {

                // 已退款

                $txtId = 13;

            }

        } elseif ($data['order_status'] == 2) {

            // 订单已取消

            $txtId = 2;

        } elseif ($data['order_status'] == 3) {

            // 订单已关闭

            $txtId = 3;

        } elseif ($data['order_status'] == 4) {

            // 申请退货

            $txtId = 7;

            if ($data['shipping_status'] == 3) {

                // 退货中

                $txtId = 8;

            } elseif ($data['shipping_status'] == 4) {

                // 已退货

                $txtId = 9;

            }

        } elseif ($data['order_status'] == 5) {

            // 申请退款

            $txtId = 10;

            if ($data['pay_status'] == 2) {

                // 退款中

                $txtId = 11;

            } elseif ($data['pay_status'] == 3) {

                // 拒绝退款

                $txtId = 12;

            } elseif ($data['pay_status'] == 4) {

                // 已退款

                $txtId = 13;

            }

        } elseif ($data['order_status'] == 255) {

            $txtId = 15;

        }

        return $txtId;

    }
    /**
     * 订单类型获取
     * @param int   $value 字段值
     * @param array $data  所有数据
     */
   

}

